#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <mutex>

//class ConfigInfo
//{
//public:
//	static ConfigInfo* GetInstace()
//	{
//		if (_pInfo == nullptr)
//		{
//			std::unique_lock<std::mutex> lock(_mtx);
//			if (_pInfo == nullptr)
//			{
//				_pInfo = new ConfigInfo;
//			}
//		}
//		return _pInfo;
//	}
//
//	std::string GetIp()
//	{
//		return _ip;
//	}
//
//private:
//	ConfigInfo()
//	{
//		std::cout << "ConfigInfo()" << std::endl;
//	}
//
//	ConfigInfo(const ConfigInfo& info) = delete;
//	ConfigInfo& operator=(const ConfigInfo& info) = delete;
//
//	std::string _ip = "172.0.0.1";
//	int _port = 80;
//
//	static ConfigInfo* _pInfo;
//	static std::mutex _mtx;
//};
//
//ConfigInfo* ConfigInfo::_pInfo = nullptr;
//std::mutex ConfigInfo::_mtx;


class ConfigInfo
{
public:
	static ConfigInfo* GetInstance()
	{
		return &_info;
	}
	std::string GetIp()
	{
		return _ip;
	}
private:
	ConfigInfo()
	{
		std::cout << "ConfigInfo()" << std::endl;
	}
	ConfigInfo(const ConfigInfo& info) = delete;
	ConfigInfo& operator=(const ConfigInfo&) = delete;
private:
	std::string _ip = "172.0.0.1";
	int _port = 80;

	static ConfigInfo _info;
};

ConfigInfo ConfigInfo::_info;